доработай код если зажат старт и индекс от 6 до 8, то игру определяем по индексу

; ==============================================================================
GAME_INDEX_RAM  = $022F     ; Адрес текущего индекса в repeat_table
DEST_RAM_ADDR   = $0032     ; Адрес назначения для 7 байт параметров
PTR_ZP          = $0039     ; Временный указатель в Zero Page (2 байта: $00-$01)
SelectGame:

    ;JSR $ECD9

    ;lda z:$FF

    ; 1. Считываем байт - индекс игры из RAM по адресу $001c
    ldx GAME_INDEX_RAM

    ; 2. Получаем номер игры из repeat_table
    lda repeat_table, x

    ; Переводим номер игры (1-9) в 0-ориентированный индекс (0-8)
    sec
    sbc #1                  ; A = Номер игры - 1

    ; Умножаем индекс на 7 (Размер структуры), используя формулу: (A * 8) - A
    sta PTR_ZP              ; Сохраняем исходный индекс во временную ячейку
    asl a                   ; A = Индекс * 2
    asl a                   ; A = Индекс * 4
    asl a                   ; A = Индекс * 8
    sec
    sbc PTR_ZP              ; A = (Индекс * 8) - Индекс = Индекс * 7

    ; Рассчитываем базовый адрес нужной игры в game_table
    clc
    adc #<game_table        ; Складываем младший байт адреса таблицы
    sta PTR_ZP              ; Сохраняем младший байт адреса в Zero Page
    lda #>game_table        ; Берем старший байт адреса таблицы
    adc #0                  ; Прибавляем перенос, если он был
    sta PTR_ZP+1            ; Сохраняем старший байт адреса в Zero Page

    ; 3. Копируем 7 байт параметров игры в область $0032
    ldy #0                  ; Инициализируем индексный регистр Y для чтения
@CopyLoop:
    lda (PTR_ZP), y         ; Читаем байт из game_table через указатель в ZP
    sta DEST_RAM_ADDR, y    ; Записываем в RAM по смещению Y
    iny                     ; Переходим к следующему байту
    cpy #7                  ; Проверяем, скопировали ли 7 байт
    bne @CopyLoop           ; Если нет, продолжаем цикл

;конец выбора игры

; Функция инициализации копирования
RAM_DEST     = $0420

copy_loader_to_ram:
    ldx #0
@loop:
    lda loader_source, x
    sta RAM_DEST, x
    inx
    cpx #128             ; Длина загрузчика
    bne @loop


game_table:
    ; 01: Super Mario Bros
    .byte 2, 2, 0, 0, 1
    .word $8004

    ; 02: Battle City
    .byte 4, 11, 5, 1, 0
    .word $C070

    ; 03: Galaxian
    .byte 1, 11, 14, 1, 1
    .word $E020

    ; 04: Lunar Ball
    .byte 6, 10, 5, 1, 1
    .word $E809

    ; 05: Duck Hunt
    .byte 7, 10, 8, 0, 0
    .word $C000

    ; 06: Wild Gunman
    .byte 9, 10, 8, 0, 1
    .word $C000

    ; 07: Balloon Fight
    .byte 10, 11, 11, 0, 0
    .word $C000

    ; 08: Bomberman
    .byte 12, 10, 11, 0, 1
    .word $C000

    ; 09: Ice Climber
    .byte 13, 11, 14, 1, 0
    .word $C014


repeat_table:
.byte 01,02,03,06,04,02,01,03,04,03,04,02,03,04,03,01
.byte 02,03,05,04,02,01,03,04,03,04,02,03,04,03,01,02
.byte 03,06,04,02,01,03,04,03,04,02,03,04,03,01,02,03
.byte 05,04,02,01,03,04,03,04,02,03,04,03,01,02,03,06
.byte 04,02,01,03,04,03,04,02,03,04,03,01,02,03,05,04
.byte 02,01,03,04,03,04,02,03,04,03,01,02,03,04,04,02
.byte 01,03,04,03,04,02,03,04,03,01,02,03,04,04,02,01
.byte 03,04,03,04,02,03,04,03,01,02,03,04,04,02,01,03
.byte 04,03,04,02,03,04,03,01,02,03,04,04,02,01,03,04
.byte 03,04,02,03,04,03,01,02,03,04,04,02,01,03,04,03
.byte 04,02,03,04,03,01,02,03,04,04,02,01,03,04,03,04
.byte 02,03,04,03,01,02,03,04,04,02,01,03,04,03,04,02
.byte 03,04,03,01,02,03,04,04,02,01,03,04,03,04,02,03
.byte 04,03,01,02,03,04,04,02,01,03,04,03,04,02,03,04
.byte 03,01,02,03,04,04,02,01,03,04,03,04,02,03,04,03
.byte 01,02,03,04,04,02,01,03,04,03,04,02,03,04,03,01
